package com.hncc.dms.service.impl;

import java.util.List;

import com.hncc.dms.domain.DmsDrug;
import com.hncc.dms.mapper.DmsDrugMapper;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.stereotype.Service;
import com.hncc.dms.service.IDmsDrugService;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;

/**
 * 药品管理Service业务层处理
 * 
 * @author ruoyi
 * @date 2020-08-13
 */
@Service
public class DmsDrugServiceImpl implements IDmsDrugService 
{
    @Resource
    private DmsDrugMapper dmsDrugMapper;


    /**
     * 查询药品管理
     * 
     * @param id 药品管理ID
     * @return 药品管理
     */
    @Override
    public DmsDrug selectDmsDrugById(Long id)
    {
        return dmsDrugMapper.selectDmsDrugById(id);
    }

    /**
     * 查询药品管理列表
     * 
     * @param dmsDrug 药品管理
     * @return 药品管理
     */
    @Override
    public List<DmsDrug> selectDmsDrugList(DmsDrug dmsDrug)
    {
        return dmsDrugMapper.selectDmsDrugList(dmsDrug);
    }

    /**
     * 新增药品管理
     * 
     * @param dmsDrug 药品管理
     * @return 结果
     */
    @Override
    public int insertDmsDrug(DmsDrug dmsDrug)
    {
        String code = dmsDrugMapper.selectCodeByRecordType(dmsDrug.getId(),dmsDrug.getTypeId());
        //+1
        dmsDrug.setCode(Long.toString(Long.parseLong(code)+1));
        dmsDrug.setCreateDate(DateUtils.getNowDate());
        return dmsDrugMapper.insertDmsDrug(dmsDrug);
    }

    /**
     * 修改药品管理
     * 
     * @param dmsDrug 药品管理
     * @return 结果
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int updateDmsDrug(DmsDrug dmsDrug)
    {
        String code = dmsDrugMapper.selectCodeByRecordType(dmsDrug.getId(),dmsDrug.getTypeId());
        //+1
        if(StringUtils.isNotNull(code)){
            dmsDrug.setCode(Long.toString(Long.parseLong(code)+1));
        }
        dmsDrug.setUpdateTime(DateUtils.getNowDate());
        return dmsDrugMapper.updateDmsDrug(dmsDrug);
    }

    /**
     * 批量删除药品管理
     * 
     * @param ids 需要删除的药品管理ID
     * @return 结果
     */
    @Override
    public int deleteDmsDrugByIds(Long[] ids)
    {
        return dmsDrugMapper.deleteDmsDrugByIds(ids);
    }

    /**
     * 删除药品管理信息
     * 
     * @param id 药品管理ID
     * @return 结果
     */
    @Override
    public int deleteDmsDrugById(Long id)
    {
        return dmsDrugMapper.deleteDmsDrugById(id);
    }

    /**
     * 查询包装单位集合
     * @return
     */
    @Override
    public List<DmsDrug> selectUnitList() {
        return dmsDrugMapper.selectUnitList();
    }

    /**
     * 常用项的 成药，草药 | id 查询
     * @param typeId 5：成药(西药，中成药)  6：草药(中草药)
     * @param ids
     * @return
     */
    @Override
    public List<DmsDrug> selectDmsDrugByTypeIdOrId(Integer typeId, String[] ids) {
        return dmsDrugMapper.selectDmsDrugByTypeIdOrId(typeId, ids);
    }
}
